<?

error_reporting(E_ERROR|E_PARSE);

/* Inicializo
*********************************************************************************************************************/

include_once($_SERVER['DOCUMENT_ROOT'] . "/includes/loader.inc.php");


// Tomo los datos
$data = $_REQUEST['data'];

/* Obtengo los datos
*********************************************************************************************************************/

// Tomo la accion
$accion = 'listar';
if ($_REQUEST['mode'])
	$accion = addslashes($_REQUEST['mode']);
	
// Tomo el ID
if ($_REQUEST['id'])
	$id = addslashes($_REQUEST['id']);

// Tomo los parametros
if ($_REQUEST['params']) {
	$params_string = addslashes($_REQUEST['params']);
	$params = Funciones::getparams($params_string);
} else {
/*
	$params = array(
		'pendiente' => 1,
		'nacional' => 1
	);
*/
}

// Instancio la clase
$Clientes = new Clientes();
$Cliente = new Cliente();
$Usuarios = new Usuarios();

// Defino los criterios de busqueda
$criterios = array(
	"nombre" 				=> array("filtro" => "c.nombre LIKE '%|param|%'"),
	"apellido" 				=> array("filtro" => "c.apellido LIKE '%|param|%'"),
	"casamiento_fecha_mes" 	=> array("filtro" => "MONTH(c.casamiento_fecha) = '|param|'"),
	"casamiento_fecha_ano" 	=> array("filtro" => "YEAR(c.casamiento_fecha) = '|param|'"),
	"id_usuario" 			=> array("filtro" => "c.id_usuario = '|param|'"),
	"id_estado" 			=> array("filtro" => "c.id_estado = '|param|'"),
	"estados" 				=> array("filtro" => "c.id_estado = '|param|'"),
	"usuarios" 				=> array("filtro" => "c.id_usuario = '|param|'"),
	"citas" 				=> array("filtro" => "|param|"),
);

// Defino los titulos del listado
$titles = array (
	'cliente' 		=> array('texto' => 'Cliente', 'sort' => 'c.apellido'),
	'vendedor' 		=> array('texto' => 'Vendedor', 'sort' => 'u.nombre'),
	'casamiento'	=> array('texto' => 'Casamiento', 'sort' => 'c.casamiento_fecha'),
	'estado' 		=> array('texto' => 'Estado', 'sort' => 'c.id_estado'),
);

// Si el filtro es por citas, agrego el titulo entrevista
if ($params['citas'])
	$titles['cita'] = array('texto' => 'Cita', 'sort' => 'ci.cita');
else
	$titles['alta'] = array('texto' => 'Alta', 'sort' => 'c.ctime');


// Obtengo los estados de los clientes
$estados = $Clientes->estados();

// Obtengo los origenes de los clientes
$origenes = $Clientes->origenes();

// Obtengo los usuarios activos
$usuarios = $Usuarios->listar();


// Tomo el aviso, en caso de haberlo
$error = $session->getFlash();
$aviso = json_decode($error, true);
$verbo = $aviso['accion'];
// Agrupo los exitos si hay mas de uno
if ($aviso['exito']) {
	if (count($aviso['exito']) > 1) {
		$exito_global = count($aviso['exito']) . ' dominios se han podido ' . $verbo . ' con &eacute;xito';
	}
}

//$Cliente->print_r($error);

// Armo la url actual
$url_origen = '/ss/clientes/listar/' . $accion . '/' . $params_string;

// Trato de unserializar el error
$error = unserialize($error);

// Obtengo las provincias
$provincias = GEO::provincias();


/* Acciones
*********************************************************************************************************************/

// Agregar
if ($accion == 'agregar') {
	$id = $Clientes->agregar($data);
	$url = ($clientes_listar_url = $session->get('clientes_listar'))? $clientes_listar_url : '/ss/clientes/';
	if (!$id) {
		$aviso['error'][] = array('cliente' => $data['cliente']['nombre'].' '.$data['cliente']['apellido'], 'texto' => $Clientes->error());
	} else {
		$aviso['exito'][] = array('cliente' => $data['cliente']['nombre'].' '.$data['cliente']['apellido'], 'texto' => 'El cliente se ha podido agregar con &eacute;xito');
	}
	$aviso['accion'] = $accion;
	$aviso = json_encode($aviso);
	$session->setFlash($aviso);

	// Redirecciono a donde estaba
	header("Location: $url");
	exit;
}

// Agregar una comunicacion
if ($accion == 'comunicacion') {

		// Obtengo comunicaciones
		$Comunicaciones = Comunicaciones::getInstance();
		
        $Comunicaciones->agregar($_POST['datos'], $_POST['id_cliente']);

        // Mensaje de exito
        $session->setFlash(serialize(array('exito' => array(array('texto' => 'Se agreg&oacute; la comunicaci&oacute;n con &eacute;xito')))));

        // Redirecciono a donde estaba
        header("Location: ".$_POST['redirect']);
        exit;
}


// Modificar
if ($accion == 'modificar') {
	$id = $Cliente->modificar($data['cliente'], $data['cliente']['id_cliente']);
	$url = ($clientes_listar_url = $session->get('clientes_listar'))? $clientes_listar_url : '/ss/clientes/';
	if (!$id) {
		$aviso['error'][] = array('cliente' => $data['cliente']['nombre'].' '.$data['cliente']['apellido'], 'texto' => $Cliente->error());
	} else {
		$aviso['exito'][] = array('cliente' => $data['cliente']['nombre'].' '.$data['cliente']['apellido'], 'texto' => 'El cliente se ha podido modificar con &eacute;xito');
	}

	$aviso['accion'] = $accion;
	$aviso = json_encode($aviso);
	$session->setFlash($aviso);

	// Redirecciono a donde estaba
	header("Location: $url");
	exit;
}


// Ver
if ($accion == 'ver') {
	$cliente = $Cliente->get($id);
}
	
// Descargar listado en excel
if ($accion == 'excel') {

	// Aplico los filtros
	foreach ($criterios as $key_criterio => $value_criterio) {
		if (isset($params[$key_criterio])) {
			$filtros[$key_criterio] = str_replace('|param|', $params[$key_criterio], $value_criterio['filtro']);
		}
	}

	// Armo las opciones para la funcion listar
	$opciones  = array(
		'rpp' => 999999999,
		'page' => 1,
		'filtros' => $filtros
	);
	if ($params['order']) {
		$params['order'] = strstr($params['order'], ',')? explode(',', $params['order']) : $params['order'];
		$opciones['order'] = $params['order'];
	}

	// Obtengo el listado
	$clientes_listado = $Clientes->excel($opciones);
}		

// Listar
if ( ($accion == 'listar') || ($accion == 'buscar') ) {

	// Almaceno la url para poder redireccionar
	$session->set('clientes_listar', $_SERVER['REQUEST_URI']);

	// Aplico los filtros
	foreach ($criterios as $key_criterio => $value_criterio) {
		if (isset($params[$key_criterio])) {
			$filtros[$key_criterio] = str_replace('|param|', $params[$key_criterio], $value_criterio['filtro']);
		}
	}

	// Armo las opciones para la funcion listar
	$rpp = ($params['items']) ? $params['items'] : 50;
	$page = ($params['pagina']) ? $params['pagina'] : 1;
	$opciones  = array(
		'rpp' => $rpp,
		'page' => $page,
		'filtros' => $filtros
	);
	if ($params['order']) {
		$params['order'] = strstr($params['order'], ',')? explode(',', $params['order']) : $params['order'];
		$opciones['order'] = $params['order'];
	}
		
	// Obtengo el listado
	$clientes_listado = $Clientes->listar($opciones);

	// Agrego el enlace al detalle
	foreach ($clientes_listado['data'] as $key => $value) {
		$clientes_listado['data'][$key]['link'] = '/ss/clientes/editar/' . $value['id_cliente'];
		$clientes_listado['data'][$key]['casamiento_fecha'] = strftime("%e %b %Y", strtotime($value['casamiento_fecha']));
	}
	
	// Armamos la URL que van a tener los botones
	$url_filtro = preg_replace('/items:(\d+)\/pagina:(\d+)\//', "", $_SERVER['REQUEST_URI']);

	// Armo el paginador con: URL base, pagina actual, resultados por pagina, pagina actual
	$paginador = Funciones::paginar($url_filtro, $rpp, $clientes_listado['resultados'], $page);
	
	// Armo los carteles de filtros
	foreach ($filtros as $key_filtro => $value_filtro) {
		$cartel[] = array(
			'filtro' => $key_filtro,
			'valor' => $params[$key_filtro],
			'url' => preg_replace('/' . $key_filtro . ':([^\\/]+)\\/?/', '', $url_filtro)
		);
	};

	// Si esta listando, genero el sidebar
	if ($accion == 'listar') {

		$sidebar['areas'] = array('Clientes' => 'Clientes');

		// Genero el sidebar de estados
		if ($_estados = $Clientes->estados_cantidad())
			foreach ($_estados as $_estado)
				$sidebar['Clientes']['estados'][$_estado['id_estado']] = array('nombre' => $_estado['estado'], 'cantidad' => $_estado['cantidad']);

		// Genero el sidebar de usuarios
		$sidebar['Clientes']['usuarios'] = $Clientes->usuarios();

		$sidebar['Clientes']['citas'] = $Clientes->citas();


//$Clientes->print_r($sidebar);
	}

}

// EDITAR
if ($accion == 'editar') {
	if (!$id) {
		$form = 'agregar';
	} else {
		$form = 'modificar';
		$cliente['cliente'] = $Cliente->get($id);
		$cliente['citas'] = $Cliente->citas($id);
	}
}

// FINALIZAR
if ($accion == 'finalizar') {
//error_reporting(E_ALL);
	// Dominios seleccionados
	$seleccionados = $_REQUEST['info']['dominios'];
	$url = $_REQUEST['url'];
//	$url = $_SERVER['REQUEST_URI'];
	foreach ($seleccionados as $dominio) {
		if (!$dominios->finalizado($dominio)) {
			$aviso['error'][] = array('dominio' => $dominio, 'texto' => $dominios->error());
		} else {
			$aviso['exito'][] = array('dominio' => $dominio, 'texto' => 'El dominio se ha podido marcar como finalizado con &eacute;xito');
		}
	}
	$aviso['accion'] = 'finalizar';
	$aviso = json_encode($aviso);
	$session->setFlash($aviso);
//echo '<pre>'.print_r($_REQUEST, true).'</pre>';
	header("Location: ".$_REQUEST['url']);
	header("Location: $url");
	exit;
}

// Armo la url para el link de ordenamiento
$sort_url = preg_replace('/order:[^\/]+\/?/', "", $url_filtro);

// Incluyo la interfaz
include('includes/tpl/header.tpl.php');
include('includes/tpl/clientes.tpl.php');
include('includes/tpl/footer.tpl.php');
?>
